"""
演示对文件的读取
"""
# 打开文件
import time
# f = open("D:/测试.txt","r",encoding="UTF-8")  # UTF-8中文 GBK中文 Big5繁体
# print(type(f))
# 读取文件 - read()
# print(f"读取10个字节的结果是：{f.read(10)}")
# print(f"read方法读取全部内容的结果是：{f.read()}")
# print("-----------------------------------------------")
# 读取文件 - readLines()
# lines = f.readlines() # 读取文件的全部行，封装到列表中
# print(f"lines对象的类型是：{type(lines)}")
# print(f"lines对象的内容是：{lines}")

# 读取文件 - readline()
# line1 = f.readline() # 一行一行读取
# line2 = f.readline()
# line3 = f.readline()
# print(f"第一行数据是：{line1}")
# print(f"第二行数据是：{line2}")
# print(f"第三行数据是：{line3}")

# for循环读取文件行
# for line in f:
#     print(f"每一行数据是：{line}")

# 文件的关闭 open打开文件后文件一直在被占用所以用完要关闭
# f.close()
# time.sleep(500000)
# with open 语法操作文件

# with open 语法操作文件 ，这个语法可以在该方法内部使用完文件后自动关闭不再占用文件
# with open("D:/测试.txt", "r", encoding="UTF-8") as f:
#     for line in f:
#         print(f"每一行数据是：{line}")

"""
演示读取文件，课后练习题
"""
# 打开文件，以读取模式打开
# f = open("D:/word.txt", "r", encoding="UTF-8")
# 方式1：读取全部内容，通过字符串count方法统计itheima单词数量
# content = f.read()
# count = content.count("itheima")
# print(f"itheima在文件中出现了:{count}次")
# 方式2：读取内容，一行一行读取
# count = 0       # 使用count变量来累计itheima出现的次数
# for line in f:
#     line = line.strip()     # 去除开头和结尾的空格以及换行符
#     words = line.split(" ")
#     for word in words:
#         if word == "itheima":
#             count += 1      # 如果单词是itheima，进行数量的累加加1
# # 判断单词出现次数并累计
# print(f"itheima出现的次数是：{count}")
# # 关闭文件
# f.close()

"""
演示文件的写入
"""
# 打开文件，不存在的文件, r, w, a
# import time
# f = open("D:/test.txt","w", encoding="UTF-8")
# # write 写入
# f.write("Hello World!!!")  # 内容写入到内存中
# # flush刷新
# f.flush()  # 将内存中积攒的内容，写入硬盘的文件中
# # close关闭
# f.close()  # close方法，内置了flush的功能
#
# # 打开一个存在的文件
# f = open("D:/test.txt", "w", encoding="UTF-8")
# # write写入、flush刷新
# f.write("黑马程序员")
# # close关闭
# f.close()

"""
演示文件的追加写入
"""
# # 打开文件，不存在的文件
# f = open("D:/test.txt", "a", encoding="UTF-8")
# # write写入
# f.write("黑马程序员")
# # flush刷新
# f.flush()
# # close关闭
# f.close()
#
# # 打开一个存在的文件
# f = open("D:/test.txt", "a", encoding="UTF-8")
# # write写入
# f.write("\n月薪过万")
# # close关闭中带flush刷新
# f.close()
"""
演示文件操作综合案例：文件备份
"""
# 打开文件得到文件对象，准备读取
fr = open("D:/bill.txt", "r", encoding="UTF-8")
# 打开文件得到文件对象，准备写入
fw = open("D:/bill.txt.bak", "w", encoding="UTF-8")
# for循环读取文件
for line in fr:
    line = line.strip()
    # 判断内容，将满足的内容写出
    if line.split(",")[4] == "测试":
        continue # continue进入下一次循环，这一次后面的内容就跳过了
    # 将内容写出去
    fw.write(line)
    # 由于前面对内容进行了strip()的操作，所以要手动的写出换行符
    fw.write("\n")
# close2个文件对象
fr.close()
fw.close()   # 写出文件调用close()会自动flush()

